﻿using System;
using System.IO;
using Mono.Data.Sqlite;

namespace AppUnioeste
{
	public static class Database
	{
		//Variavle de conexao
		private static SqliteConnection conexao;

		//Nome do arquivo do banco
		private static string dbName = "IHC2014database.db";

		//Caminho do arquivo do banco
		private static string dbPath = Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.Personal), Database.dbName);

		public static bool Exists(){
			return File.Exists (Database.dbPath);
		}

		public static void CreateDatabase(string sql){
			//Cria o arquivo do banco
			Mono.Data.Sqlite.SqliteConnection.CreateFile (dbPath);

			//Cria a conexao com o banco
			Database.conexao = new SqliteConnection ("Data Source=" + dbPath);

			//Abre a conexao, cria as tabelas do banco e fecha a conexao
			Database.OpenConnection ();
			Database.runNonQuery (sql);
			Database.CloseConnection ();

		}

		public static void OpenConnection(){
			//Abre a conexao para um comando
			Database.conexao.Open ();
		}

		public static void CloseConnection(){
			//Fecha a conexao para um comando
			Database.conexao.Close ();
		}

		public static int runNonQuery(String query){
			//Cria um comando sql
			var comando = conexao.CreateCommand ();

			//Define o comando sql
			comando.CommandText = query;

			//Executa o comando e retorna o numero de linhas afetadas
			return comando.ExecuteNonQuery ();

		}

		public static SqliteDataReader runReader(String query){
			//Cria um comando sql
			var comando = conexao.CreateCommand ();

			//Define o comando sql
			comando.CommandText = query;

			//Executa o comando e retorna o objeto DataReader
			return comando.ExecuteReader ();
		}

		public static void OpenDatabase(){
			//Cria a conexao com o banco
			conexao = new SqliteConnection ("Data Source=" + dbPath);
		}

	}
}

